home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / floppy / code.lua next >
Encoding:
Text File  |  2005-07-16  |  11.0 KB  |  331 lines

  1.  
  2. file_include('script/share/prog_border.lua')
  3.  
  4. -- -----------------------------------------------------------------
  5. -- Init
  6. -- -----------------------------------------------------------------
  7. local function prog_init()
  8.     initModels()
  9.     sound_playMusic("music/rybky15.ogg")
  10.     local pokus = getRestartCount()
  11.  
  12.     --NOTE: a final level
  13.     small:setGoal("goal_alive")
  14.     big:setGoal("goal_alive")
  15.     disketa:setGoal("goal_out")
  16.  
  17.     -- -------------------------------------------------------------
  18.     local function prog_init_room()
  19.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  20.         local roompole = 0
  21.  
  22.         if pokus > 7 and odd(pokus) then
  23.             room.uvod = 1
  24.         else
  25.             room.uvod = 0
  26.         end
  27.         room.zv = 0
  28.         room.kr = 0
  29.         room.obecna = 500 + random(2000)
  30.         room.nepo = 0
  31.  
  32.         return function()
  33.             pom2 = 0
  34.             if no_dialog() and isReady(small) and isReady(big) then
  35.                 if room.uvod == 0 and random(50) == 1 then
  36.                     room.uvod = 1
  37.                     pom2 = 1
  38.                 elseif room.zv == 0 and dist(small, disketa) < 3 and random(30) == 1 then
  39.                     room.zv = 1
  40.                     roompole = roompole + 1
  41.                     if odd(roompole) or roompole == 2 then
  42.                         pom2 = 2
  43.                     end
  44.                 elseif room.kr == 0 and dist(big, ocelkriz) < 2 and random(60) == 1 then
  45.                     room.kr = 1
  46.                     pom2 = 3
  47.                 elseif room.nepo == 0 and (dist(small, svab) < 2 or dist(big, svab) < 2) and random(20) == 1 then
  48.                     room.nepo = 1
  49.                     pom2 = 7
  50.                 elseif room.nepo == 2 then
  51.                     room.nepo = 3
  52.                     pom2 = 8
  53.                 elseif math.mod(svab.pohyby, 121) == 120 then
  54.                     svab.pohyby = svab.pohyby + 1
  55.                     pom2 = 9
  56.                 elseif stdBorderReport() then
  57.                     addm(13, "disk-m-ukol")
  58.                 elseif room.obecna > 0 then
  59.                     room.obecna = room.obecna - 1
  60.                 else
  61.                     room.obecna = 1500 + random(game_getCycles())
  62.                     pom2 = random(3) + 4
  63.                 end
  64.             end
  65.             switch(pom2){
  66.                 [1] = function()
  67.                     addv(10, "disk-v-tady")
  68.                     addm(8, "disk-m-tady")
  69.                     addm(6, "disk-m-vejit")
  70.                     addv(8, "disk-v-metrova")
  71.                     addm(6, "disk-m-velka")
  72.                     if random(pokus + 1) < 2 then
  73.                         addm(20, "disk-m-ukol")
  74.                     end
  75.                 end,
  76.                 [2] = function()
  77.                     addm(10, "disk-m-zvednem")
  78.                     addv(7, "disk-v-tezko")
  79.                     if random(4) > 0 then
  80.                         addv(8, "disk-v-nejde")
  81.                     end
  82.                 end,
  83.                 [3] = function()
  84.                     addv(10, "disk-v-kriz")
  85.                     addm(7, "disk-m-depres")
  86.                 end,
  87.                 [4] = function()
  88.                     addm(10, "disk-m-nahrat")
  89.                     addv(7, "disk-v-mas")
  90.                     addm(10, "disk-m-sakra")
  91.                     addv(7, "disk-v-vratime")
  92.                     addv(10, "disk-v-naano")
  93.                 end,
  94.                 [5] = function()
  95.                     addm(10, "disk-m-zmatlo")
  96.                     addv(7, "disk-v-neverim")
  97.                 end,
  98.                 [6] = function()
  99.                     addm(10, "disk-m-tvorecci")
  100.                     addv(8, "disk-v-viry")
  101.                     addm(9, "disk-m-potvory")
  102.                     addv(8, "disk-v-pozor")
  103.                 end,
  104.                 [7] = function()
  105.                     planDialogSet(10, "disk-x-nepohnes", 120, svab, "stav")
  106.                 end,
  107.                 [8] = function()
  108.                     if random(4) > 0 then
  109.                         planDialogSet(3, "disk-x-jejda"..random(2), 120, svab, "stav")
  110.                     end
  111.                     if random(4) > 0 then
  112.                         planDialogSet(6, "disk-x-mazany", 120, svab, "stav")
  113.                     end
  114.                 end,
  115.                 [9] = function()
  116.                     planDialogSet(3, "disk-x-uzne", 120, svab, "stav")
  117.                     if random(3) > 0 then
  118.                         addv(7, "disk-v-ulamu")
  119.                     end
  120.                 end,
  121.             }
  122.         end
  123.     end
  124.  
  125.     -- -------------------------------------------------------------
  126.     local function prog_init_disketa()
  127.         return function()
  128.         end
  129.     end
  130.  
  131.     -- -------------------------------------------------------------
  132.     local function prog_init_vir1()
  133.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  134.  
  135.         vir1.stav = 1
  136.         vir1.oci = 0
  137.         vir1.huba = 0
  138.  
  139.         return function()
  140.             switch(vir1.stav){
  141.                 [0] = function()
  142.                     if no_dialog() and random(600) == 1 then
  143.                         pom1 = random(3)
  144.                         pom2 = random(3)
  145.                         planSet(vir1, "stav", 110)
  146.                         vir1:planDialog(2, "disk-x-vir"..pom1)
  147.                         if pom1 ~= pom2 then
  148.                             vir1:planDialog(4, "disk-x-vir"..pom2)
  149.                         end
  150.                         adddel(2)
  151.                         planSet(vir1, "stav", 0)
  152.                     elseif random(4) == 1 then
  153.                         vir1.oci = random(3)
  154.                     end
  155.                 end,
  156.                 [1] = function()
  157.                     if vir1.dir ~= dir_no and game_getCycles() > 10 then
  158.                         vir1.stav = 0
  159.                     else
  160.                         if random(4) == 1 then
  161.                             vir1.oci = random(3)
  162.                         end
  163.                         if vir1.huba == 0 then
  164.                             vir1.huba = 2
  165.                         elseif random(3) == 1 then
  166.                             vir1.huba = 3 - vir1.huba
  167.                         end
  168.                     end
  169.                 end,
  170.             }
  171.             if vir1.stav < 2 then
  172.                 vir1.huba = 0
  173.             end
  174.             vir1.afaze = vir1.huba * 3 + vir1.oci
  175.             vir1:updateAnim()
  176.         end
  177.     end
  178.  
  179.     -- -------------------------------------------------------------
  180.     local function prog_init_svab()
  181.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  182.  
  183.         svab.stav = 1
  184.         svab.pam = 0
  185.         svab.pohyby = 0
  186.  
  187.         return function()
  188.             switch(svab.stav){
  189.                 [0] = function()
  190.                     if random(100) == 1 then
  191.                         svab.stav = 1
  192.                         svab.afaze = 3
  193.                     elseif svab.afaze == 3 then
  194.                         if random(2) == 1 then
  195.                             svab.afaze = 3
  196.                         else
  197.                             svab.afaze = 2
  198.                         end
  199.                     elseif random(7) == 1 then
  200.                         svab.afaze = 3
  201.                     else
  202.                         svab.afaze = 2
  203.                     end
  204.                 end,
  205.                 [1] = function()
  206.                     if random(1000) == 1 then
  207.                         svab.stav = 0
  208.                     else
  209.                         svab.afaze = 0
  210.                     end
  211.                 end,
  212.                 default = function()
  213.                     if svab.afaze == 2 then
  214.                         if random(3) == 1 then
  215.                             svab.afaze = 1
  216.                         else
  217.                             svab.afaze = 2
  218.                         end
  219.                     elseif random(3) == 1 then
  220.                         svab.afaze = 2
  221.                     else
  222.                         svab.afaze = 1
  223.                     end
  224.                 end,
  225.             }
  226.             if game_getCycles() > 20 then
  227.                 if svab.dir ~= dir_no then
  228.                     if room.nepo < 2 then
  229.                         room.nepo = 2
  230.                     end
  231.                     svab.pohyby = svab.pohyby + 1
  232.                 end
  233.                 if svab.dir == dir_down then
  234.                     svab.pam = 1
  235.                 elseif svab.pam == 1 then
  236.                     svab.pam = 0
  237.                     if no_dialog() then
  238.                         planDialogSet(0, "disk-x-au"..random(3), 120, svab, "stav")
  239.                     end
  240.                 end
  241.             end
  242.             svab:updateAnim()
  243.         end
  244.     end
  245.  
  246.     -- -------------------------------------------------------------
  247.     local function prog_init_vir2()
  248.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  249.  
  250.         vir2.stav = 1
  251.         vir2.oci = 0
  252.         vir2.huba = 0
  253.  
  254.         return function()
  255.             switch(vir2.stav){
  256.                 [0] = function()
  257.                     if no_dialog() and random(600) == 1 then
  258.                         pom1 = random(3)
  259.                         pom2 = random(3)
  260.                         planSet(vir2, "stav", 110)
  261.                         vir2:planDialog(2, "disk-x-vir"..pom1)
  262.                         if pom1 ~= pom2 then
  263.                             vir2:planDialog(4, "disk-x-vir"..pom2)
  264.                         end
  265.                         adddel(2)
  266.                         planSet(vir2, "stav", 0)
  267.                     elseif random(4) == 1 then
  268.                         vir2.oci = random(3)
  269.                     end
  270.                 end,
  271.                 [1] = function()
  272.                     if vir2.dir ~= dir_no and game_getCycles() > 10 then
  273.                         vir2.stav = 0
  274.                     else
  275.                         if random(4) == 1 then
  276.                             vir2.oci = random(3)
  277.                         end
  278.                         if vir2.huba == 0 then
  279.                             vir2.huba = 2
  280.                         elseif random(3) == 1 then
  281.                             vir2.huba = 3 - vir2.huba
  282.                         end
  283.                     end
  284.                 end,
  285.             }
  286.             if vir2.stav < 2 then
  287.                 vir2.huba = 0
  288.             end
  289.             vir2.afaze = vir2.huba * 3 + vir2.oci
  290.             vir2:updateAnim()
  291.         end
  292.     end
  293.  
  294.     -- --------------------
  295.     local update_table = {}
  296.     local subinit
  297.     subinit = prog_init_room()
  298.     if subinit then
  299.         table.insert(update_table, subinit)
  300.     end
  301.     subinit = prog_init_disketa()
  302.     if subinit then
  303.         table.insert(update_table, subinit)
  304.     end
  305.     subinit = prog_init_vir1()
  306.     if subinit then
  307.         table.insert(update_table, subinit)
  308.     end
  309.     subinit = prog_init_svab()
  310.     if subinit then
  311.         table.insert(update_table, subinit)
  312.     end
  313.     subinit = prog_init_vir2()
  314.     if subinit then
  315.         table.insert(update_table, subinit)
  316.     end
  317.     return update_table
  318. end
  319. local update_table = prog_init()
  320.  
  321.  
  322. -- -----------------------------------------------------------------
  323. -- Update
  324. -- -----------------------------------------------------------------
  325. function prog_update()
  326.     for key, subupdate in pairs(update_table) do
  327.         subupdate()
  328.     end
  329. end
  330.  
  331.